package cn.mugutu.finance.service.system;

import cn.mugutu.finance.domain.system.Resource;
import cn.mugutu.finance.domain.system.Role;
import cn.mugutu.finance.dto.BaseResult;
import cn.mugutu.finance.vo.RoleAddReqVO;
import cn.mugutu.finance.utils.Pager;

public interface RoleService extends BaseService<Role> {

    /**
     * 修改/新增角色
     * @param roleForm
     * @return
     */
    BaseResult saveOrUpdateRole(RoleAddReqVO roleForm);

    /**
     * 查询指定角色所拥有的资源
     * @param roleId
     * @param page
     * @param rows
     * @return
     */
    Pager<Resource> findResourceByRoleId(Long roleId, int page, int rows);

    /**
     * 查询指定角色没有拥有的资源
     * @param roleId
     * @param page
     * @param rows
     * @return
     */
    Pager<Resource> findResourceByRoleIdNegation(Long roleId, int page, int rows);

    /**
     * 移除指定角色的某权限
     * @param roleId
     * @param resourceId
     * @return
     */
    BaseResult moveOutResource(Long roleId, Long resourceId);

    /**
     * 为某角色添加权限
     * @param roleId
     * @param resourceId
     * @return
     */
    BaseResult moveInResource(Long roleId, Long resourceId);

}
